Skip to content

[๐Ÿš€ ์‚ฌ์ดํด2 - ๋ฏธ์…˜ (๋ธ”๋ž™์žญ ๋ฒ ํŒ…)] ๋ฃจ๋”” ๋ฏธ์…˜ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค.#1107

Open
Seonwu-K wants to merge 90 commits intowoowacourse:seonwu-kfrom
Seonwu-K:step2
Open

Conversation

@Seonwu-K
Copy link

@Seonwu-K Seonwu-K commented Mar 13, 2026

์ฒดํฌ ๋ฆฌ์ŠคํŠธ

  • ๋ฏธ์…˜์˜ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ์„ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‚˜์š”?
  • Gradle test๋ฅผ ์‹คํ–‰ํ–ˆ์„ ๋•Œ, ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ํ†ต๊ณผํ–ˆ๋‚˜์š”?
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰๋˜๋‚˜์š”?

์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

๋ธ”๋ž™์žญ2 PR ๋ฆฌ๋ทฐ ์š”์ฒญ

๋ฆฌ๋ทฐ ์š”์ฒญ

์ด๋ฒˆ ๋ฏธ์…˜์—์„œ๋Š” ํŠนํžˆ ์„ค๊ณ„๋ฅผ ๊ฒฐ์ •ํ•˜๋Š” ๊ณผ์ •์—์„œ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•˜๋ฉด ์ข‹์„์ง€์— ๋Œ€ํ•œ ์กฐ์–ธ์„ ์–ป๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.


1. Controller ๋„์ž…์— ๋Œ€ํ•œ ๊ณ ๋ฏผ

์ด๋ฒˆ ๋ฏธ์…˜์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ ๊ฐ€์žฅ ๊ณ ๋ฏผํ–ˆ๋˜ ๋ถ€๋ถ„ ์ค‘ ํ•˜๋‚˜๋Š” Controller๋ฅผ ๋„์ž…ํ•˜๋Š” ๊ฒƒ์ด ๋งž๋Š”๊ฐ€์˜€์Šต๋‹ˆ๋‹ค.

ํฌ๋ฃจ๋“ค๊ณผ ํ† ๋ก ์„ ์ง„ํ–‰ํ•˜๋˜ ์ค‘, ์ง€๋‚˜๊ฐ€๋˜ ์ฝ”์น˜๋‹˜์ด '์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์™œ ์‚ฌ์šฉํ•ด์š”?' ๋ผ๋Š” ์งˆ๋ฌธ์„ ๋˜์ง€๊ณ  ๊ฐ€์…จ๋Š”๋ฐ, ์ด๋ฒˆ ๋ฏธ์…˜์— ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ์ ์šฉํ–ˆ๋˜ ๊ฒƒ์ด ์˜ณ์•˜๋Š”์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์„ ํ•˜๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ œ๊ฐ€ ์ดํ•ดํ•œ Controller์˜ ์—ญํ• ์€ ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Model๊ณผ View ์‚ฌ์ด๋ฅผ ์—ฐ๊ฒฐํ•˜๋Š” ์—ญํ• 
  • ์—ฌ๋Ÿฌ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋ฅผ ํ๋ฆ„์— ๋งž๊ฒŒ ํ˜ธ์ถœํ•˜๋Š” ์—ญํ• 
  • ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์‚ฌ์ด์—์„œ ๊ฒŒ์ž„ ์ง„ํ–‰ ํ๋ฆ„์„ ์ œ์–ดํ•˜๋Š” ์—ญํ• 

์ €๋Š” ๊ฒŒ์ž„์˜ ์ „์ฒด ํ๋ฆ„์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ณ , ๊ทธ ์—ญํ• ์„ Controller๊ฐ€ ๋งก๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ๋‹ค๊ณ  ํŒ๋‹จํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์„ Controller์—์„œ ๋‹ด๋‹นํ•˜๋„๋ก ๊ตฌํ˜„ํ–ˆ์Šต๋‹ˆ๋‹ค.

  • ํ”Œ๋ ˆ์ด์–ด ์ž…๋ ฅ ์ฒ˜๋ฆฌ
  • ๊ฒŒ์ž„ ์ง„ํ–‰ ํ๋ฆ„ ์ œ์–ด
  • ๋„๋ฉ”์ธ ๊ฐ์ฒด ํ˜ธ์ถœ
  • View์™€ ์ƒํ˜ธ์ž‘์šฉ

ํ•˜์ง€๋งŒ ํฌ๋ฃจ๋“ค๊ณผ ๋ฆฌ๋ทฐ๋ฅผ ์ฃผ๊ณ ๋ฐ›๋Š” ๊ณผ์ •์—์„œ ์ด๋Ÿฐ ์ƒ๊ฐ๋„ ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๊ตณ์ด Controller๊ฐ€ ์—†์–ด๋„, ๋„๋ฉ”์ธ ๊ฐ์ฒด๋“ค๋ผ๋ฆฌ ์‘์ง‘์„ฑ ์žˆ๊ฒŒ ํ˜‘๋ ฅํ•˜๋„๋ก ๋งŒ๋“ค๊ณ 
์™ธ๋ถ€์—์„œ๋Š” ๋‹จ์ˆœํžˆ ํ•˜๋‚˜์˜ ์ง„์ž… ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•˜๋„๋ก ๋งŒ๋“ค ์ˆ˜๋„ ์žˆ์ง€ ์•Š์•˜์„๊นŒ?

๊ทธ๋ž˜์„œ PR์„ ์ž‘์„ฑํ•˜๋Š” ์ˆœ๊ฐ„์—๋„ Controller๊ฐ€ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ตฌ์กฐ๊ฐ€ ๊ผญ ํ•„์š”ํ–ˆ์„๊นŒ? ์— ๋Œ€ํ•ด์„œ๋Š” ๋ถ€์ •์ ์ธ ์ƒ๊ฐ์ด ๋“ญ๋‹ˆ๋‹ค.

์งˆ๋ฌธ

์ฃผ๋””๊ฐ€ ์ƒ๊ฐํ•˜์‹œ๋Š”

  • Controller๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์€ ์–ด๋–ค ๊ฒฝ์šฐ์ธ์ง€
  • ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ Controller๋ฅผ ๋„์ž…ํ•œ ์ œ ์„ ํƒ์ด ์˜ค๋ฒ„ ์—”์ง€๋‹ˆ์–ด๋ง์œผ๋กœ ๋А๊ปด์ง€์…จ๋Š”์ง€
  • ํ˜น์€ Controller ์—†์ด ๋„๋ฉ”์ธ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ํ๋ฆ„์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์ ‘๊ทผ์ด์—ˆ๋Š”์ง€

์— ๋Œ€ํ•œ ์˜๊ฒฌ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.


2. ์„ค๊ณ„ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ์˜ ๊ธฐ์ค€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ

์ด๋ฒˆ ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์„ค๊ณ„๋ฅผ ๊ฒฐ์ •ํ•ด์•ผ ํ•˜๋Š” ์ˆœ๊ฐ„๋“ค์ด ์—ฌ๋Ÿฌ ๋ฒˆ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ณ ๋ฏผ๋“ค์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ๋ฐฐํŒ… ๊ธˆ์•ก์„ Player๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•˜๋Š”๊ฐ€, ๋ณ„๋„์˜ ๊ฐ์ฒด๊ฐ€ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€
  • Result๋ฅผ ์ƒํƒœ๋กœ ๊ด€๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€, ๊ณ„์‚ฐ ๊ฒฐ๊ณผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผ ํ•˜๋Š”๊ฐ€
  • ๋”œ๋Ÿฌ์™€ ํ”Œ๋ ˆ์ด์–ด์˜ ์ƒ์† ๊ตฌ์กฐ๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ์ธ๊ฐ€, ์ถ”์ƒํ™”๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค ๊ฒƒ์ธ๊ฐ€

์ด๋Ÿฐ ๊ณ ๋ฏผ๋“ค์„ ํ•  ๋•Œ๋งˆ๋‹ค ์Šค์Šค๋กœ ๋‚˜๋ฆ„์˜ ๊ธฐ์ค€์„ ์„ธ์›Œ ๊ฒฐ์ •์„ ๋‚ด๋ ธ์ง€๋งŒ
๊ทธ ๊ธฐ์ค€์ด ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„ ๊ด€์ ์—์„œ ์ ์ ˆํ•œ ๊ธฐ์ค€์ด์—ˆ๋Š”์ง€ ํ™•์‹ ์ด ์•„์ง๋„ ์„œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ฃผ๋””์—๊ฒŒ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ถ€๋ถ„์„ ์งˆ๋ฌธํ•˜๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ

๋„๋ฉ”์ธ ์„ค๊ณ„๋ฅผ ํ•  ๋•Œ

  • ์—ฌ๋Ÿฌ ์„ค๊ณ„ ์„ ํƒ์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•˜์‹œ๋Š”์ง€
  • ๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค๊ณ„ ๊ฒฐ์ •์„ ํ•  ๋•Œ ์ค‘์š”ํ•˜๊ฒŒ ์žก์•„์•ผ ํ•  ๊ธฐ์ค€์ด ๋ฌด์—‡์ธ์ง€

์— ๋Œ€ํ•ด ์กฐ์–ธ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.


3. ํ…Œ์ŠคํŠธ์™€ ์„ค๊ณ„์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ

์ด๋ฒˆ ๋ฏธ์…˜์—์„œ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ๋А๋‚€ ์ ์€
ํ…Œ์ŠคํŠธ๊ฐ€ ์„ค๊ณ„๋ฅผ ์ด๋ˆ๋‹ค๋Š” ๊ฐ๊ฐ์ด ์•„์ง ์ต์ˆ™ํ•˜์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์ด์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ €๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋ฐฉ์‹์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

  • ๋„๋ฉ”์ธ ๋กœ์ง ์ค‘์‹ฌ ํ…Œ์ŠคํŠธ
  • ์ž…์ถœ๋ ฅ ๋กœ์ง์€ ํ…Œ์ŠคํŠธ ์ œ์™ธ
  • ๊ฒŒ์ž„ ์ „์ฒด ํ๋ฆ„์€ ์ผ๋ถ€๋งŒ ํ…Œ์ŠคํŠธ

์ฒ˜์Œ์—๋Š” TDD๋ฅผ ์‹œ๋„ํ•ด๋ณผ๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์— ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ๋จผ์ € ์จ๋ณด๊ณ  ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ์žก์•„๊ฐ€๋ ค๋Š” ์‹œ๋„๋„ ํ•ด๋ณด์•˜์ง€๋งŒ ๋„์ €ํžˆ ๊ธฐ๋Šฅ์„ ์–ด๋–ป๊ฒŒ ๊ตฌํ˜„ํ• ์ง€ ๊ตฌ์กฐ๊ฐ€ ๊ทธ๋ ค์ง€์ง€ ์•Š์•„ ๊ฒฐ๊ตญ ์ค‘๊ฐ„ ๋ถ€ํ„ฐ ํด๋ž˜์Šค ๊ตฌ์กฐ๋ฅผ ๋จผ์ € ๊ตฌ์ƒํ•ด๋‘๊ณ  ๋งž์ถฐ์„œ ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ๋Œ์•„๊ฐ„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ๋„

  • ์–ด๋–ค ๋ถ€๋ถ„๊นŒ์ง€ ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•˜๋Š”์ง€
  • ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์šด ๊ตฌ์กฐ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์„ ๋•Œ ์„ค๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ์ˆ˜์ •ํ•ด์•ผ ์‰ฌ์›Œ์งˆ์ง€

ํŒ๋‹จ์ด ์ž˜ ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์ด๋Š” ์ด๋ฒˆ ๋ธ”๋ž™์žญ ๋ฏธ์…˜์ด ๋˜์ ธ์ค€ ํ•ต์‹ฌ ์งˆ๋ฌธ์ด๊ธฐ๋„ ํ–ˆ๋Š”๋ฐ ๋ฏธ์…˜ ๋งˆ๋ฌด๋ฆฌ ๋‹จ๊ณ„์— ๋“ค์–ด์„œ๋„ ์•„์ง ํ™•์‹ ์ด ์—†์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ

  • ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์„ ๋•Œ ์–ด๋–ค ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ์˜์‹ฌํ•˜์‹œ๋Š”์ง€
  • ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒฝํ—˜์€ ์–ด๋–ป๊ฒŒ ์—ฐ์Šตํ•ด์•ผ ํ• ์ง€

์— ๋Œ€ํ•ด ์กฐ์–ธ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.


4. ๋ฏธ์…˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋„๋ฉ”์ธ ์„ค๊ณ„ ๊ธฐ์ค€์ด ์ถฉ๋Œํ•  ๋•Œ์˜ ํŒ๋‹จ ๊ธฐ์ค€

์ด์ „๋ถ€ํ„ฐ ๋ฏธ์…˜์„ ์ง„ํ–‰ํ•˜๋ฉด์„œ ์ด์–ด์ ธ์˜จ ๊ณ ๋ฏผ์ž…๋‹ˆ๋‹ค.

์šฐํ…Œ์ฝ” ๋ฏธ์…˜์—๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ์ƒํ™œ์ฒด์กฐ ๊ทœ์น™๊ณผ ๊ฐ™์€ ์—ฌ๋Ÿฌ ์ œ์•ฝ๋“ค์ด ์กด์žฌํ•˜๋ฉฐ,
์ด๋ฒˆ ๋ฏธ์…˜์—์„œ๋„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ œ์•ฝ์ด ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.

  • ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ 3๊ฐœ ์ด์ƒ ๋งŒ๋“ค์ง€ ์•Š๋Š”๋‹ค
  • ์ปฌ๋ ‰์…˜์„ ํฌ์žฅํ•œ๋‹ค
  • getter ์‚ฌ์šฉ์„ ์ง€์–‘ํ•œ๋‹ค
  • ...

์ด ๊ทœ์น™๋“ค์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ์ข‹์€ ๊ฐ€์ด๋“œ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

ํ•˜์ง€๋งŒ ๊ตฌํ˜„ ๊ณผ์ •์—์„œ ํ•œ ๊ฐ€์ง€ ๊ณ ๋ฏผ์ด ์ƒ๊ฒผ์Šต๋‹ˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด Player ๊ฐ์ฒด๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ƒํƒœ๋ฅผ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๊ฐ€์ง€๊ฒŒ ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

  • name
  • hand
  • playerStatus

์ด ๊ฒฝ์šฐ ํ•„๋“œ ์ˆ˜๊ฐ€ 3๊ฐœ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค.

์ด ์ƒํ™ฉ์—์„œ ๋‘ ๊ฐ€์ง€ ์„ ํƒ์ง€๊ฐ€ ์žˆ๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.

  1. ๊ทœ์น™์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ํ•„๋“œ๋ฅผ ์–ต์ง€๋กœ ๋ถ„๋ฆฌํ•˜๊ฑฐ๋‚˜ ๊ตฌ์กฐ๋ฅผ ๋ณ€๊ฒฝํ•œ๋‹ค.
  2. ํ˜„์žฌ ๋„๋ฉ”์ธ ๋ชจ๋ธ์—์„œ ์ž์—ฐ์Šค๋Ÿฝ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š” ์„ค๊ณ„๋ฅผ ์œ ์ง€ํ•œ๋‹ค.

์ €๋Š” ์ด๋ฒˆ ๊ตฌํ˜„์—์„œ๋Š” ๋„๋ฉ”์ธ ๋ชจ๋ธ ๊ด€์ ์—์„œ ๋” ์ž์—ฐ์Šค๋Ÿฝ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ์„ค๊ณ„๋ฅผ ์œ ์ง€ํ•˜๋Š” ๋ฐฉ์‹์„ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.

๊ทธ ์ด์œ ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Player์™€ ๊ด€๋ จ๋œ ์ •๋ณด๊ฐ€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด์— ๋ชจ์ด๋Š” ๊ฒƒ์ด ๋” ์‘์ง‘๋„๊ฐ€ ๋†’๋‹ค๊ณ  ๋А๊ผˆ์Šต๋‹ˆ๋‹ค.
  • ๊ทœ์น™์„ ๋งž์ถ”๊ธฐ ์œ„ํ•ด ๊ตฌ์กฐ๋ฅผ ์–ต์ง€๋กœ ๋ถ„๋ฆฌํ•˜๋Š” ๊ฒƒ์ด ์˜คํžˆ๋ ค ๋„๋ฉ”์ธ ๋ชจ๋ธ์„ ํ๋ฆฌ๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ ์ด ํŒ๋‹จ์ด ์ ์ ˆํ•œ ์„ ํƒ์ด์—ˆ๋Š”์ง€๋Š” ์Šค์Šค๋กœ ํ™•์‹ ์ด ์„œ์ง€ ์•Š์Šต๋‹ˆ๋‹ค.
๊ทธ๋ฆฌ๊ณ  ์ด ๊ทœ์น™์„ ๊นจ๊ณ  ๋‚ด ์„ค๊ณ„ ํŒ๋‹จ์œผ๋กœ ๊ฒฐ์ •ํ•˜๊ธฐ๊นŒ์ง€ ๊ณ ๋ฏผํ•˜๋Š” ๋ฐ์—๋„ ๋งŽ์€ ์‹œ๊ฐ„์„ ์†Œ๋น„ํ–ˆ์Šต๋‹ˆ๋‹ค.

์งˆ๋ฌธ

์ด๋Ÿฐ ์ƒํ™ฉ์ฒ˜๋Ÿผ

  • ์š”๊ตฌ์‚ฌํ•ญ์œผ๋กœ ์ œ์‹œ๋œ ์„ค๊ณ„ ์ œ์•ฝ
  • ๋„๋ฉ”์ธ ๋ชจ๋ธ ๊ด€์ ์—์„œ ์ž์—ฐ์Šค๋Ÿฝ๋‹ค๊ณ  ์ƒ๊ฐ๋˜๋Š” ์„ค๊ณ„

๊ฐ€ ์„œ๋กœ ์ถฉ๋Œํ•  ๋•Œ

์ฃผ๋””๋Š” ์–ด๋–ค ๊ธฐ์ค€์„ ๋” ์šฐ์„ ์ ์œผ๋กœ ๊ณ ๋ คํ•˜์‹œ๋Š”์ง€ ๊ถ๊ธˆํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ๊ทœ์น™๋“ค์ด ๋„๋ฉ”์ธ ์„ค๊ณ„ ์›์น™์„ ๋ฐ˜์˜ํ•œ ๊ทœ์น™์ธ์ง€, ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ํ•™์Šตํ•˜๊ธฐ ์œ„ํ•œ ๊ต์œก์šฉ ์ œ์•ฝ์ธ์ง€
๊ทธ๋ฆฌ๊ณ  ๊ทธ ๋‘ ๊ฐ€์ง€๊ฐ€ ์ถฉ๋Œํ•˜๋Š” ์ƒํ™ฉ์—์„œ๋Š” ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ํŒ๋‹จํ•˜๋ฉด ์ข‹์„์ง€์— ๋Œ€ํ•œ ์กฐ์–ธ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.


๋งˆ์ง€๋ง‰์œผ๋กœ

์ด๋ฒˆ ๋ฏธ์…˜์—์„œ๋Š” ํŠนํžˆ ๋‹ค์Œ ์งˆ๋ฌธ๋“ค์„ ์Šค์Šค๋กœ ๊ณ„์† ๊ณ ๋ฏผํ•˜๋ฉฐ ๊ตฌํ˜„ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ ์™œ ๊ธฐ์กด ์ฝ”๋“œ๊ฐ€ ๊นจ์ง€๋Š”๊ฐ€?
  • ๋ณ€๊ฒฝ ๋ฒ”์œ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๋Š” ๊ตฌ์กฐ๋ž€ ๋ฌด์—‡์ธ๊ฐ€?
  • ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๋ฅผ ์ค‘์‹ฌ์œผ๋กœ ์„ค๊ณ„๋ฅผ ํ•˜๋ ค๋ฉด ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ•˜๋Š”๊ฐ€?

ํ˜น์‹œ ์ œ๊ฐ€ ๋†“์น˜๊ณ  ์žˆ๋Š” ์„ค๊ณ„ ๊ด€์ ์ด๋‚˜
๋” ๊ณ ๋ฏผํ•ด๋ณด๋ฉด ์ข‹์„ ๋ถ€๋ถ„์ด ์žˆ๋‹ค๋ฉด ์–ด๋–ค ํ”ผ๋“œ๋ฐฑ์ด๋“  ๊ฐ์‚ฌํžˆ ๋ฐฐ์šฐ๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

tjdakf added 30 commits March 4, 2026 16:49
Seonwu-K and others added 19 commits March 10, 2026 23:10
Copy link

@jurlring jurlring left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฃจ๋”” ์•ˆ๋…•ํ•˜์„ธ์š”~
์‚ฌ์ดํด2๋„ ๋น ๋ฅด๊ฒŒ ๊ตฌํ˜„ํ•ด์ฃผ์…จ๋„ค์š”!
์ฝ”๋ฉ˜ํŠธ๋ž‘ ์งˆ๋ฌธ ๋‚จ๊ฒจ๋‘์—ˆ๋Š”๋ฐ ์‹œ๊ฐ„ ๊ดœ์ฐฎ์œผ์‹ค ๋•Œ ํ™•์ธํ•ด์ฃผ์„ธ์š”~!

}
}

private void initGame() {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Image

๊ฐ™์€ ์นด๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋‚˜์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ™•์ธํ•ด๋ณด๋‹ˆ ๋ง์”€ํ•ด์ฃผ์‹  ๊ฒƒ์ฒ˜๋Ÿผ ๊ฐ™์€ ์นด๋“œ๊ฐ€ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ์—ˆ์Šต๋‹ˆ๋‹ค.
ํ”Œ๋ ˆ์ด์–ด๋ณ„๋กœ ํ•ธ๋“œ๋ฅผ ์กฐํšŒํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์—์„œ ์ž˜๋ชป๋œ ์ฐธ์กฐ๊ฐ€ ์ด๋ฃจ์–ด์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํ•ด๋‹น ๋ฌธ์ œ ํ•ด๊ฒฐํ•˜๊ณ  ๋‹ค์‹œ ์ปค๋ฐ‹ ์˜ฌ๋ฆฌ๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!


import java.util.List;

public class GameController {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Controller ๋„์ž…์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
์ฃผ๋””๊ฐ€ ์ƒ๊ฐํ•˜์‹œ๋Š”
Controller๊ฐ€ ํ•„์š”ํ•œ ์ƒํ™ฉ์€ ์–ด๋–ค ๊ฒฝ์šฐ์ธ์ง€
์ด๋ฒˆ ๋ฏธ์…˜์—์„œ Controller๋ฅผ ๋„์ž…ํ•œ ์ œ ์„ ํƒ์ด ์˜ค๋ฒ„ ์—”์ง€๋‹ˆ์–ด๋ง์œผ๋กœ ๋А๊ปด์ง€์…จ๋Š”์ง€
ํ˜น์€ Controller ์—†์ด ๋„๋ฉ”์ธ ๊ฐ์ฒด ์ค‘์‹ฌ์œผ๋กœ ํ๋ฆ„์„ ๊ตฌ์„ฑํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚˜์€ ์ ‘๊ทผ์ด์—ˆ๋Š”์ง€

์ •๋‹ต์€ ์•„๋‹ˆ์ง€๋งŒ ์ œ ์ƒ๊ฐ์„ ๋ง์”€๋“œ๋ฆฌ๋ฉด์š”,

Controller๋ผ๋Š” ๊ฐœ๋…์€ ๊ฒฐ๊ตญ MVC ํŒจํ„ด์—์„œ ๋‚˜์˜จ ๊ฒƒ ๊ฐ™์•„์š”.
ํŒจํ„ด์ด๋ผ๋Š” ๊ฒƒ์€ ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์ด ๋‹ค์–‘ํ•œ ์š”๊ตฌ์‚ฌํ•ญ์„ ๊ตฌํ˜„ํ•˜๋ฉด์„œ "์ด๋Ÿฐ ์ƒํ™ฉ์—์„œ๋Š” ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒƒ์ด ๋” ๋‚ซ๊ฒ ๋‹ค"๋Š” ๊ฒฝํ—˜์ด ์Œ“์—ฌ ๋งŒ๋“ค์–ด์ง„ ๊ฒƒ์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์š”~ ๊ทธ๋ž˜์„œ ๋ฐ˜๋“œ์‹œ ์ ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๊ณ , ํ•ญ์ƒ ์ •๋‹ต์ด ๋˜๋Š” ๊ฒƒ๋„ ์•„๋‹ˆ๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

MVC ํŒจํ„ด์€ ํŠนํžˆ View๊ฐ€ ์กด์žฌํ•˜๋Š” ์ƒํ™ฉ์—์„œ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ๋„์ž…ํ•˜๊ธฐ ์ข‹์€ ํŒจํ„ด์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ์žˆ๊ณ , ๊ทธ ์‚ฌ์ด์—์„œ ํ๋ฆ„์„ ์กฐ์ •ํ•ด์•ผ ํ•  ๋•Œ Controller๊ฐ€ ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ๋“ฑ์žฅํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”.
๊ทธ๋ž˜์„œ ์ด๋ฒˆ ๋ฏธ์…˜์—์„œ Controller๋ฅผ ๋„์ž…ํ•œ ๊ฒƒ์ด ์˜ค๋ฒ„์—”์ง€๋‹ˆ์–ด๋ง์ด๋ผ๊ณ  ๋А๊ปด์ง€์ง€๋Š” ์•Š์Šต๋‹ˆ๋‹ค.
๊ฒŒ์ž„ ์ง„ํ–‰ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๊ณ , ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์„ ์—ฐ๊ฒฐํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜ ์žˆ๋Š” ๊ตฌ์กฐ ์ž์ฒด๋Š” ์ถฉ๋ถ„ํžˆ ์ž์—ฐ์Šค๋Ÿฌ์šด ์„ค๊ณ„๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ ํ•œํŽธ์œผ๋กœ ๋“ค์—ˆ๋˜ ์ƒ๊ฐ์€ PR์„ ๋ณด๋ฉด์„œ ํŒจํ„ด์ด๋ผ๋Š” ๊ฒƒ์ด ๋‹น์—ฐํžˆ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ตฌ์กฐ์ฒ˜๋Ÿผ ๋ฐ›์•„๋“ค์ด์‹œ๋Š” ๋ถ„๋“ค์ด ์žˆ์–ด๋ณด์—ฌ์š”..!
ํŒจํ„ด์€ ์•Œ๊ณ , ์ดํ•ดํ•˜๊ณ , ์™œ ํ•„์š”ํ•œ์ง€ ๋‚ฉ๋“ํ•œ ์ƒํƒœ์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ, ๋•Œ๋กœ๋Š” ๊ทธ๋Ÿฐ ๊ณ ๋ฏผ ์—†์ด "์›๋ž˜ ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ", "๋‹ค ์ด๋ ‡๊ฒŒ ํ•˜๋‹ˆ๊นŒ"๋ผ๋Š” ์ด์œ ๋กœ ์ ์šฉ๋˜๋Š” ๊ฒฝ์šฐ๋„ ์žˆ๋Š” ๊ฒƒ ๊ฐ™์•„์š”.

๊ทธ๋ฆฌ๊ณ  ๋ง์”€ํ•ด์ฃผ์‹  ๊ฒƒ์ฒ˜๋Ÿผ ๋„๋ฉ”์ธ ๊ฐ์ฒด๋“ค์ด ์‘์ง‘์„ฑ ์žˆ๊ฒŒ ํ˜‘๋ ฅํ•˜๋„๋ก ๋งŒ๋“ค๊ณ  ์™ธ๋ถ€์—์„œ๋Š” ํ•˜๋‚˜์˜ ์ง„์ž… ๋ฉ”์„œ๋“œ๋งŒ ํ˜ธ์ถœํ•˜๋„๋ก ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ์‹๋„ ์ถฉ๋ถ„ํžˆ ์ข‹์€ ์„ค๊ณ„๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!! ์ƒํ™ฉ๊ณผ ๊ตฌ์กฐ์— ๋”ฐ๋ผ ๋‘ ๋ฐฉ์‹ ๋ชจ๋‘ ์„ ํƒ์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”.

๋‹ค๋งŒ ๋ง์”€์ฃผ์‹  Controller์˜ ์—ญํ• ์ด๋ผ๋ฉด GameManager๋ผ๋Š” ๋„๋ฉ”์ธ์„ Controller๊ฐ€ ์ƒํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”๊ฒŒ ๋งž๋Š”์ง€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ์€ ํ•ด๋ณด๋ฉด ์ข‹์„ ๊ฒƒ ๊ฐ™์•„์š”!

Copy link
Author

@Seonwu-K Seonwu-K Mar 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Controller ๋„์ž…์— ๋Œ€ํ•ด ์ •๋ฆฌํ•ด์ฃผ์‹  ๊ด€์ ์ด ๋งŽ์ด ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

์ €๋„ ์ฒ˜์Œ์—๋Š” ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ ์‚ฌ์ด์˜ ํ๋ฆ„์„ ์กฐ์ •ํ•˜๋Š” ์—ญํ• ์ด ํ•„์š”ํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์„œ
Controller๋ฅผ ๋‘๋Š” ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ–ˆ์Šต๋‹ˆ๋‹ค.
๋ง์”€ํ•ด์ฃผ์‹  ๊ฒƒ์ฒ˜๋Ÿผ View๊ฐ€ ์กด์žฌํ•˜๊ณ  ์‚ฌ์šฉ์ž ์ž…๋ ฅ๊ณผ ์ถœ๋ ฅ์ด ์žˆ๋Š” ์ƒํ™ฉ์—์„œ๋Š”
ํ๋ฆ„์„ ์กฐ์ •ํ•˜๋Š” ๊ฐ์ฒด๊ฐ€ ์žˆ๋Š” ๊ฒƒ์ด ์ž์—ฐ์Šค๋Ÿฝ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ์Šต๋‹ˆ๋‹ค.

์–ด๋А์ชฝ์ด ๋งž๋Š”์ง€ ๋งŽ์€ ๊ณ ๋ฏผ์ด ๋˜์—ˆ๋˜ ๋งŒํผ ๋‘˜ ๋‹ค ๊ทผ๊ฑฐ๊ฐ€ ์žˆ๋Š” ์„ ํƒ์ง€๊ฐ€ ๋  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™๋‹ค๋Š” ์˜๊ฒฌ์— ๋งˆ์Œ์ด ๋†“์ž…๋‹ˆ๋‹ค.

๋‹ค๋งŒ ๋ฆฌ๋ทฐ๋ฅผ ์ฝ์œผ๋ฉด์„œ ๋ง์”€ํ•ด์ฃผ์‹  ๊ฒƒ์ฒ˜๋Ÿผ
Controller๊ฐ€ GameManager๋ฅผ ์ƒํƒœ๋กœ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ์ ์ ˆํ•œ์ง€์— ๋Œ€ํ•ด์„œ๋Š”
์กฐ๊ธˆ ๋” ๊ณ ๋ฏผํ•ด๋ณผ ํ•„์š”๊ฐ€ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์–ด์„œ ์ œ ์ฝ”๋“œ๋ฅผ ์ž์„ธํžˆ ์‚ดํŽด๋ณด์•˜์Šต๋‹ˆ๋‹ค.

ํ˜„์žฌ ์ œ GameManager๋Š” ๋„๋ฉ”์ธ์ด๋ผ๊ธฐ ๋ณด๋‹ค๋Š”,
Players, Dealer, Deck์„ ์กฐ์œจํ•˜๋ฉด์„œ ๊ฒŒ์ž„ ์ง„ํ–‰ ํ๋ฆ„์„ ๊ด€๋ฆฌํ•˜๋Š” ๊ฐ์ฒด์— ๊ฐ€๊นŒ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
๊ทธ๋ž˜์„œ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋งค๋‹ˆ์ €๋ฅผ ์ƒํƒœ๋กœ์„œ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒƒ๋„ ๋ฌธ์ œ๋Š” ์•„๋‹ˆ์ง€ ์•Š์„๊นŒ? ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋งŒ ํ”Œ๋ ˆ์ด์–ด ์ •๋ณด๋ฅผ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ง์ ‘์ ์œผ๋กœ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋‹ค๋Š” ์ ์ด ๊ณ„์† ์‹ ๊ฒฝ์“ฐ์ด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.
์ตœ์„ ์˜ ๊ตฌ์กฐ๋Š” ์•„๋‹ˆ์ง€๋งŒ ํ˜„์žฌ์˜ ์ œ๊ฐ€ ๋– ์˜ฌ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ์—์„œ๋Š” ๊ฐ€์žฅ ํ•ฉ๋ฆฌ์ ์ธ ๊ตฌ์กฐ๋ผ๊ณ  ํŒ๋‹จ๋˜์–ด
ํ˜„์žฌ์˜ ์ฝ”๋“œ๋ฅผ ์œ ์ง€ํ•  ๊ฒƒ ๊ฐ™์ง€๋งŒ ์ปจํŠธ๋กค๋Ÿฌ์˜ ์ฑ…์ž„์„ ๋œ ์ˆ˜ ์žˆ๋Š” ๊ตฌ์กฐ๊ฐ€ ๋ฌด์—‡์ด ์žˆ์„์ง€ ๊ณ„์† ๊ณ ๋ฏผํ•ด๋ณด์•„์•ผ ํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ข‹์€ ์˜๊ฒฌ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

<!-- ์ด์œ  ์ž‘์„ฑ -->


## ์–ด๋–ค ๋ถ€๋ถ„์— ์ง‘์ค‘ํ•˜์—ฌ ๋ฆฌ๋ทฐํ•ด์•ผ ํ• ๊นŒ์š”?

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์„ค๊ณ„ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ์˜ ๊ธฐ์ค€์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
๋„๋ฉ”์ธ ์„ค๊ณ„๋ฅผ ํ•  ๋•Œ
์—ฌ๋Ÿฌ ์„ค๊ณ„ ์„ ํƒ์ง€ ์ค‘ ํ•˜๋‚˜๋ฅผ ๊ฒฐ์ •ํ•  ๋•Œ ์–ด๋–ค ๊ธฐ์ค€์œผ๋กœ ํŒ๋‹จํ•˜์‹œ๋Š”์ง€
๊ฒฝํ—˜์ด ๋ถ€์กฑํ•œ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค๊ณ„ ๊ฒฐ์ •์„ ํ•  ๋•Œ ์ค‘์š”ํ•˜๊ฒŒ ์žก์•„์•ผ ํ•  ๊ธฐ์ค€์ด ๋ฌด์—‡์ธ์ง€
์— ๋Œ€ํ•ด ์กฐ์–ธ์„ ๋“ฃ๊ณ  ์‹ถ์Šต๋‹ˆ๋‹ค.

์ผ๋‹จ ํ™•์‹ ์ด ์„œ์ง€ ์•Š๋Š”๋‹ค๋ผ๊ณ  ๋ง์”€ํ•ด ์ฃผ์…จ๋Š”๋ฐ ๋„ˆ๋ฌด ์กฐ๊ธ‰ํ•ดํ•˜์‹ค ํ•„์š”๋Š” ์—†์„ ๊ฒƒ ๊ฐ™์•„์š”!
์ง€๊ธˆ ๋ง์”€ํ•ด์ฃผ์‹  ๊ณ ๋ฏผ ์ž์ฒด๊ฐ€ ๋ฐ”๋กœ ๊ทธ ๊ธฐ์ค€์„ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ณผ์ •์ด๋ผ๊ณ  ์ƒ๊ฐํ•ด์š” :)

์„ค๊ณ„๋ฅผ ํ•˜๋‹ค ๋ณด๋ฉด ์‚ฌ์‹ค ์ •๋‹ต์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ๋งŽ์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์•„์š”~ ๊ฐ™์€ ๋ฌธ์ œ๋ผ๋„ ๊ฐœ๋ฐœ์ž๋งˆ๋‹ค ๋‹ค๋ฅธ ๊ตฌ์กฐ๋ฅผ ์„ ํƒํ•˜๊ธฐ๋„ ํ•˜๊ณ , ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋” ์ ์ ˆํ•œ ์„ค๊ณ„๊ฐ€ ๋‹ฌ๋ผ์ง€๊ธฐ๋„ ํ•˜๋‹ˆ๊นŒ์š”!
๊ทธ๋ž˜์„œ ์ €๋Š” ์„ค๊ณ„ ๊ฒฐ์ •์„ ํ•  ๋•Œ ํ•ญ์ƒ ๊ณ ๋ คํ•˜๋Š” ๋ถ€๋ถ„์€ ์•„๋ž˜ ์„ธ ๊ฐ€์ง€์ธ๋ฐ์š”.

  1. ์ฝ”๋“œ๊ฐ€ ์š”๊ตฌ์‚ฌํ•ญ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”๊ฐ€
  2. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ฝ์—ˆ์„ ๋•Œ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด๊ฐ€
  3. ์ดํ›„์— ๋ณ€๊ฒฝ์ด ์ƒ๊ฒผ์„ ๋•Œ ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ์ธ๊ฐ€

์—ฌ๋Ÿฌ ์„ค๊ณ„ ์„ ํƒ์ง€๊ฐ€ ์žˆ์„ ๋•Œ๋Š” ๊ฒฐ๊ตญ ์ด ์„ธ ๊ฐ€์ง€ ๊ธฐ์ค€์—์„œ ์–ด๋А ์ชฝ์ด ๋” ๋‚˜์€์ง€ ์ƒ๊ฐํ•ด๋ณด๊ณ  ๊ฒฐ์ •ํ•˜๋Š” ํŽธ์ž…๋‹ˆ๋‹ค!

๋˜ ์ดˆ๋ณด ๊ฐœ๋ฐœ์ž๊ฐ€ ์„ค๊ณ„ ๊ฒฐ์ •์„ ํ•  ๋•Œ ๊ฐ€์žฅ ์ค‘์š”ํ•˜๊ฒŒ ๊ฐ€์ ธ๊ฐ€๋ฉด ์ข‹์€ ๊ธฐ์ค€์€ ๋‹จ์ผ ์ฑ…์ž„ ์›์น™(SRP)์ด๋ผ๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
๊ฐ์ฒด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ผ์„ ํ•˜๊ณ  ์žˆ์ง€๋Š” ์•Š์€์ง€, ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ์ฑ…์ž„์— ์ง‘์ค‘ํ•˜๊ณ  ์žˆ๋Š”์ง€๋ฅผ ๊ณ„์† ์˜์‹ฌํ•ด๋ณด๋Š” ๊ฒƒ๋งŒ์œผ๋กœ๋„ ์„ค๊ณ„๊ฐ€ ๊ฝค ๋งŽ์ด ์ •๋ฆฌ๋˜๋Š” ๊ฒฝํ—˜์„ ํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์•„์š”~

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ง์”€ํ•ด์ฃผ์‹  ๊ธฐ์ค€๋“ค์ด ๋งŽ์ด ๋„์›€์ด ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

ํ˜ผ์ž ์„ค๊ณ„ ํ•  ๋•Œ ๋ช…ํ™•ํ•œ ์ •๋‹ต์ด ์—†๋Š” ๋ฌธ์ œ๋‹ค ๋ณด๋‹ˆ ๋‹ต๋‹ตํ•จ์„ ๋А๋‚„ ๋•Œ๊ฐ€ ๋งŽ์•˜๋Š”๋ฐ,
์ •๋ฆฌํ•ด์ฃผ์‹  ๊ฒƒ์ฒ˜๋Ÿผ

  1. ์š”๊ตฌ์‚ฌํ•ญ๋Œ€๋กœ ์ž˜ ๋™์ž‘ํ•˜๋Š”์ง€
  2. ๋‹ค๋ฅธ ์‚ฌ๋žŒ์ด ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์šด ๊ตฌ์กฐ์ธ์ง€
  3. ์ดํ›„ ๋ณ€๊ฒฝ์ด ์ƒ๊ฒผ์„ ๋•Œ ์ˆ˜์ •ํ•˜๊ธฐ ์‰ฌ์šด์ง€

์ด ์„ธ ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ ๋น„๊ตํ•ด๋ณด๋Š” ๋ฐฉ์‹์ด ํŒ๋‹จํ•  ๋•Œ ์ข‹์€ ๊ธฐ์ค€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์ด๋ฒˆ ๋ฏธ์…˜์—์„œ๋Š” ๊ธฐ๋Šฅ ๊ตฌํ˜„์— ์ง‘์ค‘ํ•˜๋‹ค ๋ณด๋‹ˆ ์„ค๊ณ„ ๊ฒฐ์ •์„ ๋‚ด๋ฆด ๋•Œ ์ด๋Ÿฐ ๊ธฐ์ค€์„ ์ถฉ๋ถ„ํžˆ ์ ์šฉํ•˜์ง€ ๋ชปํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์•„ ์•„์‰ฌ์›€์ด ๋‚จ์Šต๋‹ˆ๋‹ค.

์•ž์œผ๋กœ๋Š” ์„ค๊ณ„ ์„ ํƒ์ง€๊ฐ€ ์—ฌ๋Ÿฌ ๊ฐœ ์žˆ์„ ๋•Œ ๋ง์”€ํ•ด์ฃผ์‹  ๊ธฐ์ค€๋“ค์„ ๊ฐ€์ง€๊ณ 
์กฐ๊ธˆ ๋” ์˜์‹์ ์œผ๋กœ ๋น„๊ตํ•ด๋ณด๋Š” ์—ฐ์Šต์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ์ข‹์€ ์กฐ์–ธ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!


import static org.assertj.core.api.Assertions.assertThat;

public class PlayerTest {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ํ…Œ์ŠคํŠธ์™€ ์„ค๊ณ„์˜ ๊ด€๊ณ„์— ๋Œ€ํ•œ ๊ณ ๋ฏผ
ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์„ ๋•Œ ์–ด๋–ค ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ๋จผ์ € ์˜์‹ฌํ•˜์‹œ๋Š”์ง€
ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒฝํ—˜์€ ์–ด๋–ป๊ฒŒ ์—ฐ์Šตํ•ด์•ผ ํ• ์ง€

๋จผ์ € ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์šด ์ฝ”๋“œ๊ฐ€ ๋‚˜ํƒ€๋‚ฌ์„ ๋•Œ ์–ด๋–ค ์„ค๊ณ„ ๋ฌธ์ œ๋ฅผ ์˜์‹ฌํ•˜์‹œ๋Š”์ง€์— ๋Œ€ํ•ด ์ œ ์ƒ๊ฐ์„ ๋ง์”€๋“œ๋ฆฌ๋ฉด์š”,
ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์šด ์ฝ”๋“œ๊ฐ€ ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋Š”๋ฐ์š”~

  1. ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์€ ์ฑ…์ž„์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ
    ํ…Œ์ŠคํŠธํ•ด์•ผ ํ•  ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋„ˆ๋ฌด ๋งŽ์•„์ง€๊ฑฐ๋‚˜, ํ…Œ์ŠคํŠธ ์ฝ”๋“œ๊ฐ€ ์ง€๋‚˜์น˜๊ฒŒ ๋ณต์žกํ•ด์ง€๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.
    ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ์ฑ…์ž„์„ ๋‚˜๋ˆ„์–ด ๊ฐ์ฒด๋ฅผ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์—†๋Š”์ง€ ๋จผ์ € ๊ณ ๋ฏผํ•ด๋ณด๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค~!

  2. ํ…Œ์ŠคํŠธ์—์„œ ์ปจํŠธ๋กคํ•˜๊ธฐ ์–ด๋ ค์šด ์š”์†Œ์— ์˜์กดํ•˜๊ณ  ์žˆ๋Š” ๊ฒฝ์šฐ
    ์˜ˆ๋ฅผ ๋“ค์–ด ๋žœ๋ค ๊ฐ’, ์‹œ๊ฐ„, ์ž…์ถœ๋ ฅ ๊ฐ™์€ ๋ถ€๋ถ„์ด ์ง์ ‘ ๋กœ์ง ์•ˆ์— ๋“ค์–ด๊ฐ€ ์žˆ์œผ๋ฉด ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ์–ด๋ ค์›Œ์ง€์ง€์šฉ
    ์ด๋Ÿฐ ๊ฒฝ์šฐ์—๋Š” ํ•ด๋‹น ๋ถ€๋ถ„์„ ์ตœ๋Œ€ํ•œ ๋ถ„๋ฆฌํ•˜๋Š” ๋ฐฉํ–ฅ์„ ๊ณ ๋ฏผํ•˜๊ฒŒ ๋˜๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  3. ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค๊ณผ ๋„ˆ๋ฌด ๋ณต์žกํ•˜๊ฒŒ ์–ฝํ˜€ ์žˆ๋Š” ๊ฒฝ์šฐ
    ์—ฌ๋Ÿฌ ๊ฐ์ฒด๊ฐ€ ๊ฐ•ํ•˜๊ฒŒ ๊ฒฐํ•ฉ๋˜์–ด ์žˆ์œผ๋ฉด ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๊ธฐ๊ฐ€ ์ ์  ์–ด๋ ค์›Œ์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•ด์š”.
    ์ด๋Ÿด ๋•Œ๋Š” ๊ตฌ์กฐ๋ฅผ ์กฐ๊ธˆ ๋‹จ์ˆœํ•˜๊ฒŒ ๋งŒ๋“ค ์ˆ˜ ์—†์„์ง€ ๊ณ ๋ฏผํ•˜๊ธฐ์œ„ํ•ด "์ด ์š”๊ตฌ์‚ฌํ•ญ์„ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฉ”์‹œ์ง€๊ฐ€ ํ•„์š”ํ•œ์ง€"๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•œ ๋’ค ๊ฐ ๋ฉ”์‹œ์ง€๋ฅผ ๋‹ด๋‹นํ•  ๊ฐ์ฒด๋ฅผ ๋‚˜๋ˆ„๋Š” ๋ฐฉํ–ฅ์œผ๋กœ ์„ค๊ณ„๋ฅผ ๋‹ค์‹œ ๋ฐ”๋ผ๋ณด๊ณคํ•ด์š”!

๊ทธ๋ฆฌ๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์„ค๊ณ„ํ•˜๋Š” ๊ฒฝํ—˜์„ ์–ด๋–ป๊ฒŒ ์—ฐ์Šตํ•˜๋ฉด ์ข‹์„์ง€์— ๋Œ€ํ•ด์„œ๋Š”, ์ง€๊ธˆ ๋А๋ผ์‹  ์–ด๋ ค์›€์˜ ์›์ธ ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ž…์ถœ๋ ฅ ๋ถ€๋ถ„์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ต๊ธฐ ๋•Œ๋ฌธ์ผ ์ˆ˜๋„ ์žˆ๊ฒ ๋‹ค๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค.

๋‚˜์ค‘์— ๊ต์œก ๊ณผ์ •์—์„œ ๋ฐฐ์šฐ์‹œ๊ฒ ์ง€๋งŒ ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ๋ผ๋Š” ๊ฐœ๋…์ด ์žˆ๋Š”๋ฐ์š”, ์ธ์ˆ˜ ํ…Œ์ŠคํŠธ๋Š” ์‹œ์Šคํ…œ์˜ ์ „์ฒด ํ๋ฆ„์ด ์š”๊ตฌ์‚ฌํ•ญ๋Œ€๋กœ ๋™์ž‘ํ•˜๋Š”์ง€ ํ™•์ธํ•˜๋Š” ํ…Œ์ŠคํŠธ์ž…๋‹ˆ๋‹ค.
์ง€๊ธˆ ๋ฏธ์…˜์—์„œ๋Š” ์ž…์ถœ๋ ฅ์„ ์ง์ ‘ ํ…Œ์ŠคํŠธํ•˜๊ธฐ ์–ด๋ ค์šด ๊ตฌ์กฐ๋ผ์„œ ์ „์ฒด ํ๋ฆ„์„ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๊ฐ€ ์‰ฝ์ง€ ์•Š์ง€๋งŒ, ๋งŒ์•ฝ ๊ทธ๋Ÿฐ ํ…Œ์ŠคํŠธ๊ฐ€ ๊ฐ€๋Šฅํ•ด์ง€๋ฉด ์ „์ฒด ํ๋ฆ„์„ ํ…Œ์ŠคํŠธ๋กœ ๋จผ์ € ์ž‘์„ฑํ•˜๊ณ  -> ํ…Œ์ŠคํŠธ๊ฐ€ ์‹คํŒจํ•˜๋Š” ์ƒํƒœ(Red)๋ฅผ ๋งŒ๋“ค๊ณ  -> ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•ด์„œ ํ†ต๊ณผ(Green)์‹œํ‚ค๊ณ  -> ๊ตฌ์กฐ๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฆฌํŒฉํ† ๋ง

์ด ๊ณผ์ •์„ ํ†ตํ•ด ํ…Œ์ŠคํŠธ๊ฐ€ ์„ค๊ณ„๋ฅผ ์ด๋„๋Š” ๊ฒฝํ—˜์„ ์กฐ๊ธˆ ๋” ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ ํ•  ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”!

๊ทธ๋ž˜์„œ ์ง€๊ธˆ ์ƒํ™ฉ์—์„œ๋Š” ์ „์ฒด ํ๋ฆ„์„ ์™„์ „ํžˆ ํ…Œ์ŠคํŠธํ•˜๊ธฐ๋Š” ์–ด๋ ต๋”๋ผ๋„, ์ด ๊ฒŒ์ž„์ด ์ง„ํ–‰๋˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ์–ด๋–ค ๋ฉ”์‹œ์ง€๋“ค์ด ์˜ค๊ฐ€์•ผ ํ• ๊นŒ? ์ •๋„๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด๊ณ  ๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•ด๋ณด๋Š” ์—ฐ์Šต์„ ํ•ด๋ณด์…”๋„ ์ข‹์„ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค!

์ด๋ ‡๊ฒŒ ์ ‘๊ทผํ•˜๋ฉด ๊ฐ์ฒด๋ฅผ ๋จผ์ € ๋งŒ๋“ค๊ณ  ํ…Œ์ŠคํŠธ๋ฅผ ๋งž์ถ”๋Š” ๋ฐฉ์‹๋ณด๋‹ค๋Š”, ํ…Œ์ŠคํŠธ๋ฅผ ํ†ตํ•ด ์„ค๊ณ„๋ฅผ ์กฐ๊ธˆ์”ฉ ๋งŒ๋“ค์–ด๊ฐ€๋Š” ๊ฒฝํ—˜์„ ๋” ํ•ด๋ณด์‹ค ์ˆ˜ ์žˆ์„ ๊ฒƒ ๊ฐ™์•„์š”~

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ƒ์„ธํ•œ ๋‹ต๋ณ€ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค!

์ง€๊ธˆ๊นŒ์ง€๋Š” ํ…Œ์ŠคํŠธ๊ฐ€ ์–ด๋ ค์šฐ๋ฉด ์ž‘์„ฑ ๋ฐฉ๋ฒ• ์ž์ฒด๋ฅผ ๋จผ์ € ๊ณ ๋ฏผํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์€๋ฐ,
๋ง์”€ํ•ด์ฃผ์‹  ๋‚ด์šฉ์„ ๋ณด๊ณ  ๋‚˜๋‹ˆ ๊ทธ ์ „์— ์„ค๊ณ„์ ์œผ๋กœ ๋ฌด์—‡์ด ํ…Œ์ŠคํŠธ๋ฅผ ์–ด๋ ต๊ฒŒ ๋งŒ๋“œ๋Š”์ง€๋ถ€ํ„ฐ
์‚ดํŽด๋ณด๋Š” ๊ฒƒ์ด ๋จผ์ €๋ผ๋Š” ์ ์„ ๋ฐฐ์šด ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ ์ฑ…์ž„์ด ๊ณผํ•œ ๊ฐ์ฒด, ๋ถ„๋ฆฌ๋˜์ง€ ์•Š์€ ์ž…์ถœ๋ ฅ/์ƒํƒœ, ๊ฐ•ํ•œ ๊ฒฐํ•ฉ์„ ๋จผ์ € ์˜์‹ฌํ•ด๋ณด๋ผ๋Š” ๋ถ€๋ถ„์ด ์ธ์ƒ์ ์ด์—ˆ์Šต๋‹ˆ๋‹ค.
์•ž์œผ๋กœ๋Š” ์ „์ฒด ํ๋ฆ„์—์„œ ํ•„์š”ํ•œ ๋ฉ”์‹œ์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•˜๊ณ ,
๊ทธ ๋ฉ”์‹œ์ง€๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ…Œ์ŠคํŠธ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ ์„ค๊ณ„๋ฅผ ๋‹ค๋“ฌ๋Š” ์—ฐ์Šต์„ ํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜€

private final Hand hand = new Hand();
// TODO: ๋ฒ ํŒ… ๊ธฐ๋Šฅ ์ถ”๊ฐ€ ์‹œ ๋ฒ ํŒ… ๊ธˆ์•ก ํ•„๋“œ ๋˜๋Š” ์ผ๊ธ‰ ๊ฐ์ฒด ํ•„์š”
public class Player extends Participant {
private final PlayerStatus status;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฏธ์…˜ ์š”๊ตฌ์‚ฌํ•ญ๊ณผ ๋„๋ฉ”์ธ ์„ค๊ณ„ ๊ธฐ์ค€์ด ์ถฉ๋Œํ•  ๋•Œ์˜ ํŒ๋‹จ ๊ธฐ์ค€

๋จผ์ € ๋ฏธ์…˜์˜ ์š”๊ตฌ์‚ฌํ•ญ์€ ๊ฐ€์ด๋“œ์— ๊ฐ€๊น์ง€ ๋ฐ˜๋“œ์‹œ ์ ˆ๋Œ€์ ์ธ ๋ฒ•์น™์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋Š” ์•Š์•„์š”.
๋‹ค๋งŒ ์š”๊ตฌ์‚ฌํ•ญ์„ ์ง€ํ‚ค์ง€ ์•Š๋Š” ์„ ํƒ์„ ํ•œ๋‹ค๋ฉด ์™œ ๊ทธ๋ ‡๊ฒŒ ํŒ๋‹จํ–ˆ๋Š”์ง€์— ๋Œ€ํ•œ ๋ถ„๋ช…ํ•œ ์ด์œ ๋Š” ์žˆ์–ด์•ผ ํ•œ๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค!

ํ˜„์—…์—์„œ๋Š” ์‚ฌ์‹ค ์ด๋Ÿฐ ํ˜•ํƒœ์˜ ์š”๊ตฌ์‚ฌํ•ญ์ด ๊ฑฐ์˜ ์—†๋Š” ๊ฒฝ์šฐ๋„ ๋งŽ์Šต๋‹ˆ๋‹ค..! ์‹œ์Šคํ…œ์˜ ๊ทœ๋ชจ๊ฐ€ ํฌ๊ณ  ๋ณต์žกํ•˜๊ธฐ ๋•Œ๋ฌธ์— "ํ•„๋“œ๋Š” ๋ช‡ ๊ฐœ๊นŒ์ง€", "getter๋Š” ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค"์ฒ˜๋Ÿผ ๊ตฌ์ฒด์ ์ธ ์ œ์•ฝ์ด ์ฃผ์–ด์ง€๊ธฐ๋ณด๋‹ค๋Š” ๊ฐ ํŒ€์˜ ์ปจ๋ฒค์…˜์ด๋‚˜ ์„ค๊ณ„ ๊ธฐ์ค€์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํŒ๋‹จํ•˜๊ฒŒ ๋˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ๋งŽ์Šต๋‹ˆ๋‹ค.

๊ทธ๋ž˜์„œ ์ €๋Š” ๋ฏธ์…˜์—์„œ ์ œ์‹œ๋œ ๊ทœ์น™๋“ค์€ ์‹ค์ œ ๋„๋ฉ”์ธ ์„ค๊ณ„๋ฅผ ๊ฐ•์ œํ•˜๊ธฐ ์œ„ํ•œ ๊ทœ์น™์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š”, ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ์—ฐ์Šตํ•˜๊ธฐ ์œ„ํ•œ ๊ต์œก์šฉ ์ œ์•ฝ์— ๊ฐ€๊น๋‹ค๊ณ  ์ƒ๊ฐํ•ฉ๋‹ˆ๋‹ค.
์˜ˆ๋ฅผ ๋“ค์–ด "์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋ฅผ 3๊ฐœ ์ดํ•˜๋กœ ์ œํ•œํ•œ๋‹ค", "์ปฌ๋ ‰์…˜์„ ํฌ์žฅํ•œ๋‹ค" ๊ฐ™์€ ๊ทœ์น™์€ ํŠน์ • ์ƒํ™ฉ์—์„œ ๋ฐ˜๋“œ์‹œ ์ง€์ผœ์•ผ ํ•˜๋Š” ์ ˆ๋Œ€์ ์ธ ์„ค๊ณ„ ์›์น™์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š”, ๊ฐ์ฒด์˜ ์ฑ…์ž„์„ ๋‚˜๋ˆ„๊ณ  ์„ค๊ณ„๋ฅผ ๊ณ ๋ฏผํ•ด๋ณด๊ฒŒ ๋งŒ๋“ค๊ธฐ ์œ„ํ•œ ์žฅ์น˜๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฑฐ๋“ ์š”!

๋‹ค๋งŒ ํ•œ ๊ฐ€์ง€ ๊ธฐ์ค€์œผ๋กœ ์ƒ๊ฐํ•ด๋ณด๋ฉด, ์ด ์ •๋„ ๊ทœ๋ชจ์˜ ๋ฏธ์…˜์—์„œ ๊ทœ์น™์„ ์ง€ํ‚ค์ง€ ๋ชปํ•˜๋Š” ๋ถ€๋ถ„์ด ๋„ˆ๋ฌด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์„ค๊ณ„๋ฅผ ์˜์‹ฌํ•ด๋ด์•ผํ•  ๊ฒƒ ๊ฐ™์•„์š”~!
์ด ๊ทœ์น™๋“ค์€ "์ ์–ด๋„ ์ด ์ •๋„ ๊ทœ๋ชจ์—์„œ๋Š” ์ด๋Ÿฐ ๋ฐฉ์‹์œผ๋กœ ์„ค๊ณ„ํ•ด๋ณผ ์ˆ˜ ์žˆ๋‹ค"๋Š” ๋ฐฉํ–ฅ์„ ์ œ์‹œํ•ด์ฃผ๋Š” ๊ฒƒ์œผ๋กœ ๋ณด์—ฌ์„œ์š”!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ตœ๋Œ€ํ•œ ๊ทœ์น™์„ ์ง€ํ‚ค๊ธฐ ์œ„ํ•ด ์˜์‹ํ•˜๋ฉด์„œ ๊ฐœ๋ฐœ์— ์ž„ํ•˜๋ฉด์„œ๋„, ํƒ€ํ˜‘์ด ํ•„์š”ํ•˜๋‹ค๋ฉด ๊ทธ ์ด์œ ์— ๋Œ€ํ•ด ๊นŠ๊ฒŒ ์ƒ๊ฐํ•ด๋ณด๋Š” ๊ฒƒ์ด ๋„์›€์ด ๋  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

ํŠนํžˆ '๋ฏธ์…˜์—์„œ ๊ทœ์น™์„ ์ง€ํ‚ค์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์ด ๋งŽ์ด ๋ฐœ์ƒํ•œ๋‹ค๋ฉด ์„ค๊ณ„๋ฅผ ์˜์‹ฌํ•ด๋ณด์•„์•ผ ํ•œ๋‹ค'๋Š” ๋ง์ด ์™€๋‹ฟ์•˜์Šต๋‹ˆ๋‹ค. ๋ธ”๋ž™์žญ ๋ฏธ์…˜์˜ ๊ทœ๋ชจ์—์„œ๋„ ์ด๋Ÿฌํ•œ ๊ทœ์น™๋“ค์„ ์ง€ํ‚ค์ง€ ๋ชปํ•œ๋‹ค๋ฉด ์„ค๊ณ„ ๋ฐฉ์‹์„ ๊ฒ€ํ† ํ•  ์‹ ํ˜ธ์ด๊ธฐ๋„ ํ•œ ๊ฒƒ ๊ฐ™๋„ค์š”..!
์ •์„ฑ์ ์ธ ๋ฆฌ๋ทฐ ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค ๐Ÿ˜€

BUST("๋ฒ„์ŠคํŠธ", -1);

private String name;
private final String name;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์‚ฌ์šฉ๋˜์ง€ ์•Š๋Š”๋ฐ ํ•„์š”ํ• ๊นŒ์š”?

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด์ „ ์‚ฌ์ดํด์˜ ๊ธฐ๋Šฅ์ด์—ˆ๋Š”๋ฐ ์ด์ œ๋Š” ํ•„์š”๊ฐ€ ์—†์–ด์ ธ์„œ ์ œ๊ฑฐํ•˜๋Š”๊ฒŒ ๋งž๋Š” ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค..!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

dto์— ํŒจํ‚ค์ง€ ์œ„์น˜๊ฐ€ domain์— ์žˆ๋Š” ์ด์œ ๊ฐ€ ๊ถ๊ธˆํ•ด์š” :)

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

DTO๋ฅผ domain ํŒจํ‚ค์ง€์— ๋‘” ๊ฒƒ์— ํŠน๋ณ„ํ•œ ์˜๋„๊ฐ€ ์žˆ์—ˆ๋˜ ๊ฒƒ์€ ์•„๋‹ˆ๊ณ ,
DTO์˜ ์—ญํ• ์— ๋Œ€ํ•ด ๋ช…ํ™•ํ•˜๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ์ƒํƒœ์—์„œ ์œ„์น˜๋ฅผ ๊ฒฐ์ •ํ–ˆ๋˜ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ฆฌ๋ทฐ๋ฅผ ๋ณด๊ณ  DTO์˜ ์—ญํ• ์— ๋Œ€ํ•ด ๋‹ค์‹œ ์ƒ๊ฐํ•ด๋ณด๋‹ˆ,
DTO๋Š” ๊ณ„์ธต ๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ์„ ์œ„ํ•œ ๊ฐ์ฒด์— ๊ฐ€๊น๊ธฐ ๋•Œ๋ฌธ์—
domain ๋ณด๋‹ค๋Š” ๋ณ„๋„์˜ dto ํŒจํ‚ค์ง€๋‚˜ ์ƒ์œ„ ๊ณ„์ธต์— ๋‘๋Š” ๊ฒƒ์ด ๋” ์ ์ ˆํ•œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋ง์”€ํ•ด์ฃผ์‹  ๋‚ด์šฉ์„ ๋ฐ˜์˜ํ•ด ํŒจํ‚ค์ง€ ๊ตฌ์กฐ๋ฅผ ๋‹ค์‹œ ์ •๋ฆฌํ•ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. ๊ฐ์‚ฌํ•ฉ๋‹ˆ๋‹ค.

Comment on lines 42 to 58
@@ -53,4 +57,10 @@ private static Result calculateResult(Player player, Dealer dealer) {

return Result.DRAW;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if๋ฌธ์„ ์ค„์ผ ๋ฐฉ๋ฒ•์ด ๋” ์—†์„๊นŒ์š”! enum์„ ์ž˜ ํ™œ์šฉํ•ด๋ณด๋ฉด ์–ด๋•Œ์š”?

Copy link
Author

@Seonwu-K Seonwu-K Mar 14, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ณ  if๋ฌธ์„ ์ค„์ด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ Predicate enum ๋ฐฉ์‹์„ ๊ฒ€ํ† ํ•ด๋ดค์Šต๋‹ˆ๋‹ค.

๋‹ค๋งŒ ํ•ด๋‹น ๋ฐฉ์‹์€ ์กฐ๊ฑด๊ณผ ํŒ์ • ํ๋ฆ„์ด ๋ถ„๋ฆฌ๋˜์–ด ๋ธ”๋ž™์žญ ๋ฃฐ์„ ํ•œ๋ˆˆ์— ํŒŒ์•…ํ•˜๊ธฐ ์–ด๋ ค์›Œ์ง€๊ณ , ์ฝ๊ธฐ์— ๋‹จ์ˆœํ•œ ์กฐ๊ฑด 5๊ฐœ๋ฅผ ์ค„์ด๋ ค๋‹ค ๋ณต์žก๋„๊ฐ€ ์˜ฌ๋ผ๊ฐ€๋Š”๊ฒŒ ์•„๋‹๊นŒ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ์Šต๋‹ˆ๋‹ค. ํ˜„์žฌ์˜ ์กฐ๊ฑด๋ฌธ ์ˆœ์„œ๋Š” ๋ธ”๋ž™์žญ2์˜ ๊ทœ์น™์„ ๊ฐ€์žฅ ์ง๊ด€์ ์œผ๋กœ ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๊ฑฐ๋“ ์š”..

๊ทธ๋ž˜์„œ if๋ฌธ์€ ์œ ์ง€ํ•˜๋˜, ํŒ์ • ์ฑ…์ž„์„ Result.from(player, dealer) ํ˜•ํƒœ๋กœ ์˜ฎ๊ฒจ Result๊ฐ€ ์Šค์Šค๋กœ ์ž์‹ ์˜ ๊ฐ’์„ ๊ฒฐ์ •ํ•˜๋„๋ก ๋ฆฌํŒฉํ† ๋งํ•˜๋Š” ๋ฐฉํ–ฅ์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฐํ•˜์‹œ๋‚˜์š”?


---

# ์‚ฌ์ดํด2 ๊ธฐ๋Šฅ ๊ตฌํ˜„

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด๋ฒˆ ์‚ฌ์ดํด์— ๋ฏธ์…˜ ์ค‘ ๊ธฐ๋ก์ด ์žˆ์—ˆ๋˜๊ฑฐ ๊ฐ™์€๋ฐ README๋‚˜ PR์—๋Š” ๋”ฐ๋กœ ์•ˆ์ ์–ด์ฃผ์‹œ๋‚˜์š”?!

๊ธฐ๋Šฅ ์ถ”๊ฐ€๋กœ ์ธํ•ด ์ˆ˜์ •ํ•œ ์œ„์น˜ ๊ฐœ์ˆ˜
์‚ฌ์ดํด1 ๋•Œ๋ณด๋‹ค ์ˆ˜์ • ๋ฒ”์œ„๊ฐ€ ์ค„์—ˆ๋Š”๊ฐ€/๋Š˜์—ˆ๋Š”๊ฐ€
๊ทœ์น™ ์ ์šฉ์œผ๋กœ ๋ณ€๊ฒฝํ•œ ์ฝ”๋“œ 1๊ณณ
ํ…Œ์ŠคํŠธ๊ฐ€ ์„ค๊ณ„๋ฅผ ๋„์šด ์ˆœ๊ฐ„ 1ํšŒ

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๊ธฐ๋ก์„ ํ•ด๋‘์—ˆ๋Š”๋ฐ PR์—์„œ ์งˆ๋ฌธ ๊ฑฐ๋ฆฌ๋ฅผ ๊ณ ๋ฏผํ•˜๋‹ค๊ฐ€ ์ ๋Š” ๊ฒƒ์„ ๋†“์ณค์Šต๋‹ˆ๋‹ค ๐Ÿฅฒ
README์— ์—…๋ฐ์ดํŠธํ•˜์—ฌ ์ปค๋ฐ‹ํ•ด๋‘๊ฒ ์Šต๋‹ˆ๋‹ค..!

private int initialHandSize;
private List<String> hand;
private final String playerName;
private final int initialHandSize;

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์š”๊ธฐ ์–ด์ฐจํ”ผ 2๋งŒ ๋“ค์–ด๊ฐ€๋Š”๋ฐ ๊ตณ์ด ์ƒํƒœ๋กœ ๊ฐ€์ ธ์•ผํ•˜๋Š”์ง€ ๋ชจ๋ฅด๊ฒ ์–ด์š”!

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ฒ˜์Œ ์„ค๊ณ„๋ฅผ ํ•  ๋•Œ์—๋Š” ํ™•์žฅ ๊ฐ€๋Šฅ์„ฑ์„ ๊ณ ๋ คํ•ด์„œ ์ดˆ๊ธฐ ํ•ธ๋“œ์˜ ํฌ๊ธฐ๊ฐ€ ๋ฐ”๋€Œ์—ˆ์„ ๋•Œ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ๋„๋ก ์ƒํƒœ๋กœ ๋‹ค๋ฃจ๊ณ ์ž ํ•˜์—ฌ ๋„์ž…ํ–ˆ์—ˆ์Šต๋‹ˆ๋‹ค. ๋ฆฌ๋ทฐ๋ฅผ ๋ฐ›๊ณ  ์ฝ”๋“œ๋ฅผ ๋Œ์•„๋ณด๋‹ˆ DTO ๋ณ€์ˆ˜๋กœ ๋งŒ๋“ ๋‹ค๋Š” ๊ฒƒ์€ ์ƒ์„ฑ ์ฑ…์ž„๋„ ์ƒ๊ธฐ๊ณ , ์ฝ”๋“œ๋ฅผ ๋ณด๋Š” ์ž…์žฅ์—์„œ ์˜๋ฌธ์ด ์ƒ๊ธธ ๋งŒํ•œ ์ฝ”๋“œ ์ธ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

๋‚จ๊ฒจ์ฃผ์‹  ๋ฆฌ๋ทฐ๋ฅผ ์ฝ๊ณ  ํ™•์žฅ์„ฑ์— ๋Œ€ํ•œ ํŒ๋‹จ์„ ์–ด๋–ป๊ฒŒ ํ•ด์•ผํ• ์ง€ ์ฐพ์•„๋ณด๋‹ค๊ฐ€ YAGNI์— ๋Œ€ํ•œ ๋‚ด์šฉ์„ ์ ‘ํ•˜๊ฒŒ ๋˜์—ˆ๋Š”๋ฐ, ํ•ญ์ƒ ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•˜๋ฉด์„œ '์ด๋ ‡๊ฒŒ ํ™•์žฅ๋œ๋‹ค๋ฉด ์–ด๋–กํ•˜์ง€?'๋ผ๋Š” ์ƒ๊ฐ์œผ๋กœ ๋‹น์žฅ ์“ธ ํ•„์š”๊ฐ€ ์—†๋Š” ์ฝ”๋“œ ๊ตฌ์กฐ๋ฅผ ๋„์ž…ํ•œ ์ ์ด ๋งŽ์€ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.

์šฐ์„  ํ•ด๋‹น ํ•„๋“œ๋ฅผ ์ œ๊ฑฐํ•˜๊ณ , ์•ž์œผ๋กœ๋„ 'ํ™•์žฅํ•˜๊ธฐ ์‰ฌ์šด ์ฝ”๋“œ'์™€ 'ํ™•์žฅ์„ ๋Œ€๋น„ํ•ด์„œ ํ•„์š”์—†๋Š” ์ฝ”๋“œ๋ฅผ ๋ฏธ๋ฆฌ ์จ๋‘๋Š” ๊ฒƒ'์„ ์ž˜ ๊ตฌ๋ถ„ํ•ด์„œ ๊ฐœ๋ฐœ์„ ํ•ด์•ผํ•  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค

@Seonwu-K Seonwu-K requested a review from jurlring March 15, 2026 15:16
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants